package com.zyx.xml.dom4j;

import cn.hutool.core.io.resource.ClassPathResource;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

import java.io.FileWriter;
import java.nio.charset.StandardCharsets;

/**
 * Description:
 * <br/>11.5 修改XML文档
 *
 * @author Yaxi.Zhang
 * @since 2022/9/25 16:12
 */
public class Dom4jUpdate {
    public static void main(String[] args) throws Exception {
        // 使用SAXReader来解析XML文档
        SAXReader reader = new SAXReader();
        // 忽略元素的开始标签、结束标签之间的空白
        reader.setStripWhitespaceText(true);
        // 将元素之间相邻的文本内容合并处理
        reader.setMergeAdjacentText(true);
        Document doc = reader.read(new ClassPathResource("ch11_05/book.xml").getFile());
        // 获取XML文档的根元素
        Element root = doc.getRootElement();
        // 创建一个“计算机书籍”子元素
        Element pcBook = root.addElement("计算机书籍");
        // 添加一个随机数作为isbn属性值
        pcBook.addAttribute("isbn", Math.round((Math.random() * 1000)) + "");
        // 为“计算机书籍”元素添加“书名”子元素，并设置属性值
        Element name = pcBook.addElement("书名");
        name.setText("疯狂Java讲义");
        // 为“计算机书籍”元素添加“价格”子元素，并设置属性值
        Element price = pcBook.addElement("价格");
        price.setText(99.00 + "");
        // 定义一个输出格式对象
        OutputFormat format = new OutputFormat("	", true, StandardCharsets.UTF_8.name());
        FileWriter fw = new FileWriter("com-zyx-xml/src/main/resources/ch11_05/book-new.xml");
        // 定义一份XMLWriter对象
        XMLWriter writer = new XMLWriter(fw, format);
        writer.write(doc);
        fw.close();
    }
}
